* Generic Subsystem Peripheral Image Loader

subsys-pil-tz is a generic peripheral image loader (PIL) driver. It is
used for loading the firmware images of the subsystems into memory and
preparing the subsystem's processor to execute code. It's also responsible
for shutting down the processor when it's not needed.

Required properties:
- compatible:	      Must be "qcom,pil-tz-generic"
- qcom,firmware-name: Base name of the firmware image.

Optional properties:
- reg:		      Pairs of physical base addresses and region sizes of
		      memory mapped registers.
- reg-names:	      Names of the bases for the above registers. Not required for
		      PIL usage. Ex. "wrapper_base", "vbif_base".
- interrupts:	      Subsystem to Apps watchdog bite interrupt.
- vdd_'reg'-supply: Reference to the regulator that supplies the corresponding
		    'reg' domain.
- qcom,proxy-reg-names: Names of the regulators that need to be turned on/off
			during proxy voting/unvoting.
- qcom,active-reg-names: Names of the regulators that need to be turned on for the
			subsystem to run. Turned off when the subsystem is shutdown.
- qcom,vdd_'reg'-uV-uA:    Voltage and current values for the 'reg' regulator.
- qcom,proxy-clock-names:  Names of the clocks that need to be turned on/off during
			   proxy voting/unvoting.
- qcom,active-clock-names: Names of the clocks that need to be turned on for the
			   subsystem to run. Turned off when the subsystem is shutdown.
- clock-names:	      Names of all the clocks that are accessed by the subsystem.
- qcom,<clock-name>-freq: Frequency to be set for that clock in Hz. If the property
			  isn't added for a clock, then the default clock frequency
			  would be set to 19200000 Hz.
- qcom,msm-bus,name:  Name of the bus client for the subsystem.
- qcom,msm-bus,num-cases: Number of use-cases.
- qcom,msm-bus,num-paths: Number of paths.
- qcom,msm-bus,active-only: If not set, uses the dual context by default.
- qcom,msm-bus,vectors-KBps: Vector array of master id, slave id, arbitrated
			     bandwidth and instantaneous bandwidth.
- qcom,pas-id:	      pas_id of the subsystem.
- qcom,proxy-timeout-ms: Proxy vote timeout value for the subsystem.
- qcom,smem-id:	      ID of the SMEM item for the subsystem.
- qcom,is-not-loadable: Boolean. Present if the subsystem's firmware image does not
			need to be loaded.
- qcom,pil-no-auth: Boolean. Present if the subsystem is not authenticated and brought
		    out of reset by using the PIL ops.
- qcom,mem-protect-id: Virtual ID used by PIL to call into TZ/HYP to protect/unprotect
			subsystem related memory.
- qcom,gpio-err-fatal: GPIO used by the subsystem to indicate error fatal to the apps.
- qcom,gpio-err-ready: GPIO used by the subsystem to indicate error ready to the apps.
- qcom,gpio-proxy-unvote: GPIO used by the subsystem to trigger proxy unvoting in
			  the apps.
- qcom,gpio-force-stop: GPIO used by the apps to force the subsystem to shutdown.
- qcom,gpio-stop-ack: GPIO used by the subsystem to ack force stop or a graceful stop
		      to the apps.
- qcom,restart-group: List of subsystems that will need to restart together.
- qcom,keep-proxy-regs-on: Boolean. Present if during proxy unvoting, PIL needs to leave
			the regulators enabled after removing the voltage/current votes.
- qcom,edge:		GLINK logical name of the remote subsystem
- qcom,ssctl-instance-id: Instance id used by the subsystem to connect with the SSCTL
			  service.
- qcom,sysmon-id:	platform device id that sysmon is probed with for the subsystem.
- qcom,pil-force-shutdown: Boolean. If set, the SSR framework will not trigger graceful shutdown
                           on behalf of the subsystem driver.
- qcom,pil-generic-irq-handler: generic interrupt handler used for communication with subsytem
				based on bit values in scsr registers.
- qcom,spss-scsr-bits: array of bit positions into the scsr registers used in generic handler.
- qcom,complete-ramdump: Boolean. If set, complete ramdump i.e. region between start address of
			first segment to end address of last segment will be collected without
			leaving any hole in between.
- qcom,ignore-ssr-failure: Boolean. If set, SSR failures are not considered fatal.
- qcom,signal-aop: Boolean. If set, when subsystem is brought up, pil will send a notification
			to AOP through qmp mailbox driver.
- qcom,minidump-id: ID that is used to index into the global minidump table of
			contents to access a subsystem's minidump table of
			contents.
- qcom,aux-minidump-ids: List of IDs that index into the global minidump table
			of contents to access the table of contents for
			additional minidump entries that should be collected
			along with the subsystem's minidump.
- qcom,pon-depends-on: String that indicates the name of the subsystem that has
			to be powered-on before this subsystem is powered-on.
			If the dependednt subsystem is already powered-on,
			regardless of the fact that it's requested to power-on
			explicitly, the framework won't try to power it back up again.

- qcom,poff-depends-on: String that indicates the name of the subsystem that has
			to be powered-off before this subsystem is powered-off.
			If the dependednt subsystem is already powered-off,
			regardless of the fact that it's requested to power-off
			explicitly, the framework won't try to power it off again.

- qcom,minidump-as-elf32: Boolean. If set, minidump is collected in ELF32 format.

- qcom,mas-crypto: phandle to the bus master of crypto core.

Example:
	qcom,venus@fdce0000 {
		compatible = "qcom,pil-tz-generic";
		reg = <0xfdce0000 0x4000>,
		      <0xfdc80000 0x400>;

		vdd-supply = <&gdsc_venus>;
		qcom,proxy-reg-names = "vdd";
		clock-names = "core_clk", "iface_clk", "bus_clk", "mem_clk",
				"scm_core_clk", "scm_iface_clk", "scm_bus_clk",
				"scm_core_clk_src";
		qcom,proxy-clock-names = "core_clk", "iface_clk", "bus_clk",
					"mem_clk", "scm_core_clk",
					"scm_iface_clk", "scm_bus_clk",
					"scm_core_clk_src";
		qcom,scm_core_clk_src-freq = <50000000>;

		qcom,msm-bus,name = "pil-venus";
		qcom,msm-bus,num-cases = <2>;
		qcom,msm-bus,num-paths = <1>;
		qcom,msm-bus,active-only = <0>;
		qcom,msm-bus,vectors-KBps =
				<63 512 0 0>,
				<63 512 0 304000>;

		qcom,pas-id = <9>;
		qcom,proxy-timeout-ms = <2000>;
		qcom,firmware-name = "venus";
	};

	qcom,lpass@fe200000 {
		compatible = "qcom,pil-tz-generic";
		reg = <0xfe200000 0x00100>,
		      <0xfd485100 0x00010>,
		      <0xfc4016c0 0x00004>;

		interrupts = <0 162 1>;

		vdd_cx-supply = <&pm8841_s2_corner>;
		qcom,proxy-reg-names = "vdd_cx";
		qcom,vdd_cx-uV-uA = <7 100000>;
		clock-names = "bus_clk", "xo", "scm_core_clk", "scm_iface_clk",
				"scm_bus_clk", "scm_core_clk_src";
		qcom,active-clock-names = "bus_clk";
		qcom,proxy-clock-names = "xo", "scm_core_clk", "scm_iface_clk",
					"scm_bus_clk", "scm_core_clk_src";
		qcom,scm_core_clk_src-freq = <50000000>;

		qcom,smem-id = <423>;
		qcom,pas-id = <1>;
		qcom,proxy-timeout-ms = <10000>;
		qcom,firmware-name = "adsp";
		qcom,edge = "lpass";

		/* GPIO inputs from lpass */
		qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_2_in 0 0>;
		qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_2_in 2 0>;
		qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_2_in 1 0>;
		qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_2_in 3 0>;

		/* GPIO output to lpass */
		qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_2_out 0 0>;
		qcom,ssctl-instance-id = <14>;
		qcom,sysmon-id = <1>;

		/* Power-off venus before LPASS */
		qcom,poff-depends-on = "venus";
	};
